home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / progjour / 1988 / 05 / datetime.cxx < prev    next >
Text File  |  1988-08-18  |  3KB  |  112 lines

  1. // datetime.cxx
  2. //
  3. // example of using classes in C++ for the OS/2 date and time interface.
  4. //
  5. // (c) Copyright 1988 Aspen Scientific
  6. // All Rights Reserved.
  7.  
  8. #include    <stdio.h>
  9. #include    <os2.h>
  10. #include    "datetime.hxx"
  11.  
  12. static char *months[] = {
  13.     "Jan", "Feb", "Mar",
  14.     "Apr", "May", "Jun",
  15.     "Jul", "Aug", "Sep",
  16.     "Oct", "Nov", "Dec"
  17. };
  18.  
  19. static char *days[] = {
  20.     "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
  21. };
  22.  
  23. // the following are the class object routines
  24.  
  25. // the constructor of a DateAndTime object
  26. DateAndTime::DateAndTime(int dt, int tm)
  27. {
  28.     // allocate memory for the date and time
  29.     dtBuf = new DATETIME;
  30.  
  31.     // allocate memory for the show buffers
  32.     showBuf      = new char[ showSize=26 ];
  33.  
  34.     showDateOnly = (dt ? new char[ dateSize=17 ] : (dateSize=0, (char *)0));
  35.  
  36.     showTimeOnly = (tm ? new char[ timeSize=10 ] : (timeSize=0, (char *)0));
  37.  
  38.     // it is a comfort to know that all objects of type
  39.     // DateAndTime will reuse error, month and day data, since
  40.     // the two class members are declared as static.
  41.  
  42.     // error message
  43.     errorMsg = "Error\n";
  44.  
  45.     // set up month and day names
  46.     monthName = months;
  47.     dayName   = days;
  48.  
  49.     // initialize with the current date and time.
  50.     // perform last, so that the result is accurate.
  51.     Update();
  52. }
  53.  
  54. // the destructor of a DateAndTime object
  55. DateAndTime::~DateAndTime()
  56. {
  57.     // give memory back to free storage
  58.     delete dtBuf;
  59.     delete showBuf;
  60.     if (dateSize)
  61.         delete showDateOnly;
  62.     if (timeSize)
  63.         delete showTimeOnly;
  64. }
  65.  
  66. // show the DateAndTime; format a string and return a pointer to it.
  67. // format is the same as that found in the std-C library routine ctime().
  68. char *DateAndTime::Show()
  69. {
  70.     sprintf( showBuf, "%s %s %02d %02d:%02d:%02d %4d\n",
  71.         dayName[ dtBuf->weekday ],
  72.         monthName[ dtBuf->month - 1 ],
  73.         dtBuf->day,
  74.         dtBuf->hours,
  75.         dtBuf->minutes,
  76.         dtBuf->seconds,
  77.         dtBuf->year );
  78.  
  79.     return ( showBuf );
  80. }
  81.  
  82. // show only the date portion of the DateAndTime object
  83. char *DateAndTime::ShowDate()
  84. {
  85.     if (showDateOnly == (char *)0)
  86.         return ( errorMsg );
  87.  
  88.     sprintf( showDateOnly, "%s %s %02d %4d\n",
  89.         dayName[ dtBuf->weekday ],
  90.         monthName[ dtBuf->month - 1 ],
  91.         dtBuf->day,
  92.         dtBuf->year );
  93.  
  94.     return ( showDateOnly );
  95. }
  96.  
  97. // show only the time portion of the DateAndTime object
  98. char *DateAndTime::ShowTime()
  99. {
  100.     if (showTimeOnly == (char *)0)
  101.         return ( errorMsg );
  102.  
  103.     sprintf( showTimeOnly, "%02d:%02d:%02d\n",
  104.         dtBuf->hours,
  105.         dtBuf->minutes,
  106.         dtBuf->seconds );
  107.  
  108.  
  109.     return ( showTimeOnly );
  110.  
  111. }
  112.